I. Tester les concepts (Rappel et Introduction)
Activité 1 : Appeler une procédure dans une autre (Imbrication)
Dans la procédure ci-dessous, quel est le rôle des lignes CARRE 100, CARRE 200, CARRE 400 ?
POUR SUITE
CARRE 100
CARRE 200
CARRE 400
FIN
A) Elles **appellent** la procédure CARRE avec des paramètres différents.
B) Elles définissent la procédure CARRE.
C) Elles créent des nouvelles variables.
Activité 2 : L'avantage de l'imbrication
Pourquoi est-il préférable d'utiliser REPETE 8 [ CARRE 50 TD 45 ] plutôt que d'écrire huit fois les commandes du carré (AV 50 TD 90...)?
A) C'est la seule façon de faire des rotations.
B) Le programme s'exécute plus lentement.
C) Le code est plus clair, plus court et facilement modifiable.
Activité 3 : Introduire une condition d'arrêt
Dans la procédure POUR SPIRALE :COTE..., quelle primitive est utilisée pour vérifier si la spirale doit s'arrêter si le côté dépasse 200 ?
REPETE 100 [ SI :COTE > 200 [STOP] ... ]
A) REPETE
B) SI [condition] [STOP]
C) DONNE
Statut : 0 / 3 activités tentées.
II. Les Procédures Imbriquées et le Contrôle
1. Les Procédures Imbriquées (Appel d'une procédure dans une autre)
L'imbrication consiste à appeler une procédure déjà définie à l'intérieur du corps d'une autre procédure. Cela permet de construire des dessins complexes à partir d'éléments simples (modularité).
Exemple : Suite de Carrés Imbriqués (Figure 2)
Pour dessiner une suite de trois carrés de tailles différentes ayant un angle commun:
# Prérequis : La procédure CARRE :C doit être définie (ex: AV :C TD 90)
POUR SUITE
CARRE 100
CARRE 200
CARRE 400
FIN
# Pour exécuter : I SUITE
Ici, la procédure SUITE appelle trois fois la procédure CARRE avec les paramètres 100, 200 et 400.
2. Programmes Créatifs : L'utilisation de REPETE et des Procédures Paramétrées
En combinant l'imbrication avec la boucle REPETE, on peut générer des motifs complexes (fleurs, rosaces, spirales) en quelques lignes de code.
Exemple : Rosace à base de Triangles (Rotation du motif)
POUR ROSACE :C
REPETE 12 [
TRIANGLE :C # Dessine un triangle (procédure supposée définie)
TD 30 # Tourne de 360/12 = 30 degrés
]
FIN
3. Structure de Contrôle : La Condition SI...STOP
Pour des boucles qui n'ont pas un nombre de répétitions fixe (comme les spirales qui grossissent), on utilise la structure SI pour définir une condition d'arrêt.
Syntaxe : SI [condition] [instructions]
Si la condition est vraie, les instructions entre crochets sont exécutées. Nous utilisons STOP pour arrêter la procédure.
Exemple : Spirale à Côté Variable (Arrêt)
On utilise la commande DONNE "COTE :COTE + 5 pour augmenter la taille du côté à chaque tour.
POUR SPIRALE :COTE :ANGLE
REPETE 100 [
SI :COTE > 200 [STOP] # Arrête si le côté dépasse 200
AV :COTE TD :ANGLE
DONNE "COTE :COTE + 5
]
FIN
# Test : I SPIRALE 0 120 (Spirale triangulaire)
# Test : I SPIRALE 0 60 (Spirale hexagonale)
III. 10 Exercices Pratiques (Imbrication et Contrôle)
Exercice 1 : Fleur à 6 pétales
En utilisant la procédure TRIANGLE :T (qui dessine un triangle équilatéral), créez la procédure FLEUR :T qui répète le triangle 6 fois avec une rotation de 60 degrés entre chaque.
Exercice 2 : Bâtiment complet
Créez la procédure MAISON :C qui appelle d'abord CARRE :C (base du mur) puis TRIANGLE :C (toit) de la même taille, en assurant que le triangle est bien positionné au-dessus du carré.
N'oubliez pas les mouvements de repositionnement (LC/BC).
Exercice 3 : Spirale à Côté Limité
Écrivez la procédure SPIRA.LIM :C.INIT qui dessine une spirale carrée (TD 90) commençant par :C.INIT et augmentant de 10 pas à chaque tour. La procédure doit **s'arrêter** dès que la longueur du côté dépasse 150.
Exercice 4 : Ligne de carrés
En utilisant la procédure CARRE :C, créez la procédure RANG :NB :C. Elle doit répéter :NB fois le dessin d'un carré de côté :C en avançant de :C + 5 pas (sans tracer) après chaque carré.
Exercice 5 : Alerte de pas
Créez la procédure AV.PRUDENT :P qui avance de :P pas. Si :P est supérieur à 100, la procédure doit s'arrêter immédiatement (utiliser SI :P > 100 [STOP]) sans avancer.
Exercice 6 : Polygones Colorés
En utilisant la procédure POLY :N :C (Ex. 4 Séance 5), créez la procédure ARC.EN.CIEL :C qui dessine 4 polygones (carré, pentagone, hexagone, octogone) de côté :C avec une couleur différente pour chacun.
Utilisez : FCC 1, FCC 2, FCC 3, FCC 4. N'oubliez pas le TD 90 ou TG 90 pour les séparer.
Exercice 7 : Compteur de Côtés
Initialisez une variable globale DONNE "COMPTEUR 0. Créez une procédure COMPTE.CARRE :C qui dessine un carré de côté :C et augmente le COMPTEUR de 1 ( DONNE "COMPTEUR :COMPTEUR + 1) après le dessin.
Exercice 8 : Courbe Dynamique
Écrivez la procédure COURBE :N :ANGLE. Elle doit répéter :N fois l'action AV 5, TD :ANGLE, puis augmenter :ANGLE de 2 degrés ( DONNE "ANGLE :ANGLE + 2) à chaque répétition.
Exercice 9 : Saut Conditionnel
Créez la procédure TRACER.SAUTER :P. Elle doit avancer de :P. Si :P est supérieur à 50, la tortue doit lever son crayon (LC) pour le prochain pas, sinon elle le baisse (BC).
Utilisez SI :P > 50 [LC] [BC].
Exercice 10 : Rosace à Taille Décroissante
Créez la procédure ROSACE.DIM :C qui dessine 4 carrés. Chaque carré doit être de taille :C. Après chaque carré, la procédure doit se tourner de 90 degrés et appeler CARRE avec une taille réduite de 10 pas (CARRE :C - 10). La procédure s'arrête si :C devient inférieur à 10.
C'est une auto-répétition non-stricte. Vous pouvez utiliser SI :C < 10 [STOP] au début de la procédure.
Corrections des 10 Exercices de Synthèse
**Pré-requis pour les exercices suivants :**
POUR CARRE :C
REPETE 4 [ AV :C TD 90 ]
FIN
POUR TRIANGLE :T
REPETE 3 [ AV :T TD 120 ]
FIN
Correction Exercice 1 : Fleur à 6 pétales
POUR FLEUR :T
REPETE 6 [
TRIANGLE :T
TD 60 # 360 / 6 = 60
]
FIN
# Test : FLEUR 50
Correction Exercice 2 : Bâtiment complet
POUR MAISON :C
CARRE :C # Base
# Déplacement pour le toit (Revenir au coin et monter)
TG 90 AV :C TG 90 # Se positionner en haut à gauche
TRIANGLE :C # Toit
# Optionnel : repositionnement final (TG 90 AV :C TG 90 AV :C)
FIN
# Test : MAISON 80
Correction Exercice 3 : Spirale à Côté Limité
POUR SPIRA.LIM :C.INIT
DONNE "COTE :C.INIT
REPETE 100 [
SI :COTE > 150 [STOP] # Arrêt
AV :COTE
TD 90
DONNE "COTE :COTE + 10
]
FIN
# Test : SPIRA.LIM 10
Correction Exercice 4 : Ligne de carrés
POUR RANG :NB :C
REPETE :NB [
CARRE :C
LC # Lève crayon
AV :C + 5 # Avance et espace
BC # Baisse crayon
]
FIN
# Test : RANG 5 30
Correction Exercice 5 : Alerte de pas
POUR AV.PRUDENT :P
SI :P > 100 [STOP]
AV :P
FIN
# Test : AV.PRUDENT 50 (Avance) / AV.PRUDENT 120 (Stop)
Correction Exercice 6 : Polygones Colorés
POUR POLYGONES.COULEUR :C
FCC 1 POLY 4 :C TD 90 # Carré (bleu)
FCC 2 POLY 5 :C TD 90 # Pentagone (rouge)
FCC 3 POLY 6 :C TD 90 # Hexagone (magenta)
FCC 4 POLY 8 :C TD 90 # Octogone (orange)
FIN
# Test : POLYGONES.COULEUR 50
Correction Exercice 7 : Compteur de Côtés
# Définir globalement : DONNE "COMPTEUR 0
POUR COMPTE.CARRE :C
CARRE :C
DONNE "COMPTEUR :COMPTEUR + 1
ECRIS :COMPTEUR
FIN
# Test : COMPTE.CARRE 50, puis COMPTE.CARRE 100
Correction Exercice 8 : Courbe Dynamique
POUR COURBE :N :ANGLE
DONNE "A :ANGLE
REPETE :N [
AV 5
TD :A
DONNE "A :A + 2 # L'angle tourne de plus en plus
]
FIN
# Test : COURBE 50 10
Correction Exercice 9 : Saut Conditionnel
POUR TRACER.SAUTER :P
AV :P
SI :P > 50 [LC] [BC] # Si P > 50 : Lève | Sinon : Baisse
FIN
# Test : TRACER.SAUTER 60, puis TRACER.SAUTER 30
Correction Exercice 10 : Rosace à Taille Décroissante
POUR ROSACE.DIM :C
SI :C < 10 [STOP] # Condition d'arrêt
CARRE :C
TD 90
# Appel récursif avec un nouveau paramètre
ROSACE.DIM :C - 10
FIN
# Test : ROSACE.DIM 100